Many devices can be configured and commanded over a network. For example, a network monitoring system can install configurable devices in the network to monitor network activities. Each configurable device can be configured over the network to collect status or event statistics of interest to a user. With hundreds of these devices and hundreds or thousands of events to monitor by each device, transmitting the configuration data over a network can consume significant amount of bandwidth. Occasionally, the transmission may take so long that it times out before completion. As another example, network security policies can be distributed as a collection of commands from one device to another. Transmission of a large number of commands over a network to a large number of devices also consumes a significant amount of bandwidth.
Conventionally, data distribution is generally initiated by a server. Data sent by the server usually includes a complete and detailed data file that enables a device to operate properly. When there is an update to the data file, the server would send the entire updated data file to the device. Generating the entire data file for ordinarily minor updates consumes server resources. Further, if there is a minor error in the transmission of the data file, the entire file needs to be re-sent over again. With multiple devices requesting data files from the server, the distribution of policy or configuration data can create a significant burden on network bandwidth and CPU availability.